package com.boarsoft.boar.batch.biz;

import java.util.List;

import com.boarsoft.boar.batch.entity.BatchExecution;
import com.boarsoft.common.dao.PagedResult;

/**
 * 批量任务执行记录查询服务
 */
public interface BatchExecutionBiz {
	/**
	 * 
	 * @param id
	 * @return
	 */
	BatchExecution get(String id);
	/**
	 * 根据batchId查询记录
	 *
	 * @param batchId
	 * @return
	 */
	BatchExecution getBybatchId(String batchId);

	List<BatchExecution> getAllByBatchId(String batchId);

	List<BatchExecution> getSonNods(String id);

	/**
	 * 
	 * @param ids
	 * @return
	 */
	List<BatchExecution> list(String[] ids);

	/**
	 * 根据条件获取所有的执行记录
	 * 
	 * @param infoId
	 *            批量定义ID
	 * @param startTime
	 * @param endTime
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	PagedResult<BatchExecution> list(String infoId, String startTime, String endTime, int pageNo, int pageSize);

	/**
	 * 根据条件获取所有的执行记录
	 * 
	 * @param catalog
	 *            not null
	 * @param key
	 *            code or name
	 * @param startTime
	 * @param endTime
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	PagedResult<BatchExecution> list(String catalog, String key, String startTime, String endTime, int pageNo, int pageSize);

	/**
	 * 添加新的执行记录，并返回id
	 * 
	 * @param o
	 * @return
	 */
	String save(BatchExecution o);

	/**
	 * 更新执行记录，并返回id
	 *
	 * @param o
	 * @return
	 */
	String update(BatchExecution o);

	/**
	 * 获取指定批量的上一次执行记录
	 * 
	 * @param defId
	 * @return
	 */
	BatchExecution last(String defId);

	/**
	 * 查询指定状态的批量任务
	 * 
	 * @param status
	 * @return
	 */
	List<BatchExecution> list(short status);

	/**
	 * 查询所有活动任务
	 * 
	 * @return
	 */
	List<BatchExecution> list();

	/**
	 * 根据id查询子项记录
	 * @param id
	 * @return
	 */
	List<BatchExecution> list(String id);

	/**
	 * 查询顶级执行记录，即parentId为null的执行记录
	 *
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	List<BatchExecution> list(String startTime, String endTime);

	/**
	 * 分页查询顶级执行记录，即parentId为null的执行记录
	 *
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	PagedResult<BatchExecution> list(String startTime, String endTime, int pageNo, int pageSize);

	/**
	 * 分页查询所有状态为'新任务'，'排队中'，'执行中'或'取消中'(非终态)的执行记录
	 * 
	 * @param
	 * @return
	 */
	PagedResult<Object[]> listExecuting(int pageNo, int pageSize);

	/**
	 * 删除某条执行记录，用于重跑？
	 * 
	 * @param id
	 */
	void delete(String id);
	
	/**
	 * 更新执行状态为成功
	 * 
	 * @param id
	 */
    public int updateStatusSuccess(String id);

	/**
	 * 更新执行状态为失败
	 * 
	 * @param id
	 */
    public int updateStatusFailed(String id);
}
